package Offer.offer2016;

import domain.TreeNode;

public class Test39b {

    public static void main(String[] args) {
        TreeNode node1 = new TreeNode(1);
        TreeNode node2 = new TreeNode(2);
        TreeNode node3 = new TreeNode(3);
        TreeNode node4 = new TreeNode(4);
        TreeNode node5 = new TreeNode(5);
        TreeNode node6 = new TreeNode(6);
        TreeNode node7 = new TreeNode(7);
        node1.left = node2;
        node1.right = node3;
        node2.left = node4;
        node2.right = node5;
        node3.left = node6;
        node3.right = node7;
        node4.left = node4.right = null;
        node5.left = node4.right = null;
        node6.left = node4.right = null;
        node7.left = node4.right = null;
        System.out.println(isBalanced(node1));
    }

    public static boolean isBalanced(TreeNode root) {
        int depth = 0;
        return isBalanced(root, depth);
    }

    public static boolean isBalanced(TreeNode root, int depth) {
        if (root == null) {
            depth = 0;
            return true;
        }
        int left = 0;
        int right = 0;
        if (isBalanced(root.left, left) && isBalanced(root.right, right)) {
            if (left - right <= 1 && left - right >= -1) {
                depth = 1 + (left > right ? left : right);
                return true;
            }
        }
        return false;
    }
}
